<?
	/*
		Управление контроллерами.
		author: djerom
		date: 2011-07-09
		version: 0.0.0.1
	*/
	class c_controllers_list_controller extends c_base_controller
	{
		function index($args)
		{
			global $mvc;
			
			$mvc->theme->name = 'default';
			$mvc->theme->set_item('header', 'admin_header');
			$mvc->theme->set_item('footer', 'admin_footer');
			
			// Получаем список файлов в папке controllers.
			$files = glob($mvc->parse('{base_path}controllers/*.php'));
			foreach($files as $k => $v)
			{
				// Есди это файл контроллера, то добавим его в список.
				preg_match('/c_(\\w*)_controller.php$/i', $v, $subs);
				
				if (sizeof($subs) > 1)
					$this->controllers[] = $subs[1];
			}
			
			$this->data = $mvc->load_array($this->data_path."/list.php");
			// Добавим в список недостающие контроллеры.
			foreach($this->controllers as $controller)
			{
				if (!isset($this->data[$controller]))
				{
					$this->data[$controller] = array('name' => $controller, 'visible' => true);
				}
			}		

			$this->controllers = array_flip($this->controllers);
			// Удалим из списка не найденные контроллеры.
			foreach($this->data as $k => $v)
			{
				if (!isset($this->controllers[$k]))
				{
					unset($this->data[$k]);
				}
			}		

			// Сортируем контроллеры.
			ksort($this->data);
			$mvc->save_array($this->data, $this->data_path."/list.php");
			
			return $this->show('index');
		}
		
		function save($args)
		{
			global $mvc;
			
			// Загружаем спсиок контроллеров.
			$this->data = $mvc->load_array($this->data_path."/list.php");
			// Устанавливаем видимость.
			foreach($this->data as $name => $contr)
			{
				$this->data[$name]['visible'] = (int)($_REQUEST[$name.'_mode'] == 'on');
			}
			// Сохраняем список.
			$mvc->save_array($this->data, $this->data_path."/list.php");
			
			// Перекинем на index, так как он проверяет наличие файлов.			
			return $this->index($args);
		}
		
		function get_list()
		{
			global $mvc;

			// Получаем список файлов в папке controllers.
			$files = glob($mvc->parse('{base_path}controllers/*.php'));
			foreach($files as $k => $v)
			{
				// Есди это файл контроллера, то добавим его в список.
				preg_match('/c_(\\w*)_controller.php$/i', $v, $subs);
				
				if (sizeof($subs) > 1)
					$this->controllers[] = $subs[1];
			}
			
			$this->data = $mvc->load_array($this->data_path."/list.php");
			// Добавим в список недостающие контроллеры.
			foreach($this->controllers as $controller)
			{
				if (!isset($this->data[$controller]))
				{
					$this->data[$controller] = array('name' => $controller, 'visible' => true);
				}
			}		

			$this->controllers = array_flip($this->controllers);
			// Удалим из списка не найденные контроллеры.
			foreach($this->data as $k => $v)
			{
				if (!isset($this->controllers[$k]))
				{
					unset($this->data[$k]);
				}
			}
			return $this->data;
		}
	}
?>